﻿using System;
using System.Speech.Recognition;
using System.Globalization;
class Program
{
    static void Main(string[] args)
    {
        // 检测当前系统类型
        PlatformID os_type = Environment.OSVersion.Platform;
        if (os_type != PlatformID.Win32NT)
        {
            Console.WriteLine($"当前系统不支持语音识别，需要Windows系统，当前系统类型: {os_type}");
            return;
        }
        else
        {
            try
            {
                Console.WriteLine($"默认区域: {CultureInfo.CurrentCulture}");
                // 查询本机已安装的 CurrentCulture
                // foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
                // {
                //     Console.WriteLine($"{culture.Name} - {culture.DisplayName}");
                // }

                // 初始化语音识别引擎
                using (SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(CultureInfo.CurrentCulture))
                {

                    // 设置默认音频输入设备
                    recognizer.SetInputToDefaultAudioDevice();

                    // 创建听写语法（自由格式语音）
                    Grammar dictationGrammar = new DictationGrammar();
                    recognizer.LoadGrammar(dictationGrammar);

                    // 注册语音识别事件
                    recognizer.SpeechRecognized += (sender, e) =>
                    {
                        Console.WriteLine($"识别结果: {e.Result.Text}");
                    };

                    // 注册识别拒绝事件（处理无法识别的情况）
                    recognizer.SpeechRecognitionRejected += (sender, e) =>
                    {
                        Console.WriteLine("未能识别语音输入");
                    };

                    // 开始异步识别（持续监听）
                    recognizer.RecognizeAsync(RecognizeMode.Multiple);

                    Console.WriteLine("正在监听，请开始说话...（按回车键退出）");
                    Console.ReadLine();

                    // 停止识别
                    recognizer.RecognizeAsyncStop();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"错误: {ex.Message}");
            }
        }
    }
}